package p500.srm509;

import java.util.LinkedList;
import java.util.List;

import utils.ExampleRunner;

/**
 * Created by IntelliJ IDEA.
 * User: smalex
 * Date: 6/8/11
 * Time: 3:48 PM
 * with help
 */
public class NumberLabyrinthDiv2 {

  private static class Point {
    private int r;
    private int c;
    private int k;

    private Point(int r, int c, int k) {
      this.r = r;
      this.c = c;
      this.k = k;
    }

    @Override
    public boolean equals(Object o) {
      if (this == o) return true;
      if (!(o instanceof Point)) return false;

      Point point = (Point) o;

      if (c != point.c) return false;
      if (k != point.k) return false;
      if (r != point.r) return false;

      return true;
    }

    @Override
    public int hashCode() {
      int result = r;
      result = 31 * result + c;
      result = 31 * result + k;
      return result;
    }

    @Override
    public String toString() {
      return "Point{r=" + r + ", c=" + c + ", k=" + k + '}';
    }
  }

  private int[][] xy = new int[][]{{0, 1}, {1, 0}, {-1, 0}, {0, -1}};
  private boolean[][][] visited;
  private int[][] map;
  private int[][][] w;
  private int H;
  private int W;

  public int getMinimumNumberOfMoves(String[] board, int rs, int cs, int r2, int c2, int K) {
    H = board.length;
    W = board[0].length();
    map = new int[H][W];
    visited = new boolean[H][W][55];
    for (int i = 0; i < H; i++) {
      String row = board[i];
      for (int j = 0; j < board[i].length(); j++) {
        map[i][j] = row.charAt(j) == '.' ? -1 : row.charAt(j) - '0';
      }
    }
    List<Point> q = new LinkedList<Point>();
    w = new int[H][W][55];

    for (int i = 0; i < w.length; i++) {
      for (int j = 0; j < w[i].length; j++) {
        for (int k = 0; k < 55; k++) {
          w[i][j][k] = Integer.MAX_VALUE;
        }
      }
    }
    q.add(new Point(rs, cs, K));
    visited[rs][cs][K] = true;
    w[rs][cs][K] = 0;
    while (!q.isEmpty()) {
      Point point = q.remove(0);
      int r1 = point.r;
      int c1 = point.c;
      int k = point.k;
      int min = w[r1][c1][k];
      int col = map[r1][c1];
      if (col != 0) {
        for (int[] d : xy) {
          if (col > 0) {
            addPoint(q, r1, c1, k, min, d, col);
          } else {
            if (k > 0) {
              for (int i = 9; i >= 1; i--) {
                addPoint(q, r1, c1, k - 1, min, d, i);
              }
            }
          }
        }
      }
    }
    int res = Integer.MAX_VALUE;
    for (int i : w[r2][c2]) {
      if (i != Integer.MAX_VALUE) {
        res = Math.min(i, res);
      }
    }
    res = res == Integer.MAX_VALUE ? -1 : res;
    return res;
  }

  private void addPoint(List<Point> q, int r1, int c1, int k, int min, int[] d, int i) {
    int newR = r1 + i * d[0];
    int newC = c1 + i * d[1];
    if (newR < 0 || newC < 0 || newR >= H || newC >= W || visited[newR][newC][k]) {
      return;
    }
    if (w[newR][newC][k] <= min + 1) {
      return;
    }
    w[newR][newC][k] = min + 1;
    visited[newR][newC][k] = true;
    q.add(new Point(newR, newC, k));
  }

  public static void main(String[] args) {
    ExampleRunner.eq(1, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"...2", "....", "3..."}, 0, 0, 2, 3, 0));
    ExampleRunner.eq(2, 2, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"...2", "....", "3..."}, 0, 0, 2, 3, 1));
    ExampleRunner.eq(3, 3, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"...3", "....", "2..."}, 0, 0, 2, 3, 3));
    ExampleRunner.eq(4, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"55255", ".0.0.", "..9..", "..3..", "3.9.3", "44.44"}, 3, 2, 4, 2, 10));
    ExampleRunner.eq(5, 10, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"920909949", "900020000", "009019039", "190299149", "999990319", "940229120", "000409399", "999119320", "009939999"}, 7, 3, 1, 1, 50));
    ExampleRunner.eq(6, 4, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"21.53...", "...05445", "433354.1", "5..54.11", "..4.114.", ".05340.."}, 3, 0, 2, 0, 6));
    ExampleRunner.eq(7, 12, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}, 0, 0, 49, 49, 50));
    ExampleRunner.eq(8, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}, 0, 0, 49, 49, 11));
    ExampleRunner.eq(9, 12, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}, 0, 0, 49, 49, 12));
    ExampleRunner.eq(10, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"00"}, 0, 0, 0, 1, 23));
    ExampleRunner.eq(11, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{".....111112222233333.....4444455555", ".....111112222233333.....4444455555", ".....111112222233333.....4444455555", ".....111112222233333.....4444455555", ".....111112222233333.....4444455555", "11111111112222233333.....4444455555", "11111111112222233333.....4444455555", "11111111112222233333.....4444455555", "11111111112222233333.....4444455555", "11111111112222233333.....4444455555", "22222222222222233333.....4444455555", "22222222222222233333.....4444455555", "22222222222222233333.....4444455555", "22222222222222233333.....4444455555", "22222222222222233333.....4444455555", "33333333333333333333.....4444455555", "33333333333333333333.....4444455555", "33333333333333333333.....4444455555", "33333333333333333333.....4444455555", "33333333333333333333.....4444455555", ".........................4444455555", ".........................4444455555", ".........................4444455555", ".........................4444455555", ".........................4444455555", "44444444444444444444444444444455555", "44444444444444444444444444444455555", "44444444444444444444444444444455555", "44444444444444444444444444444455555", "44444444444444444444444444444455555", "55555555555555555555555555555555555", "55555555555555555555555555555555555", "55555555555555555555555555555555555", "55555555555555555555555555555555555", "55555555555555555555555555555555555"}, 0, 0, 34, 34, 2));
    ExampleRunner.eq(12, 98, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", "11111111111111111111111111111111111111111111111111", ".1111111111111111111111111111111111111111111111111"}, 0, 49, 49, 0, 39));
    ExampleRunner.eq(13, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", "22222222222222222222222222222222222222222222222222", ".2222222222222222222222222222222222222222222222222"}, 0, 49, 49, 0, 39));
    ExampleRunner.eq(14, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", "33333333333333333333333333333333333333333333333333", ".3333333333333333333333333333333333333333333333333"}, 0, 49, 49, 0, 32));
    ExampleRunner.eq(15, 21, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "55555555555555555555555555555555555555555555555555", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", "44444444444444444444444444444444444444444444444444", ".4444444444444444444444444444444444444444444444444"}, 0, 49, 49, 0, 12));
    ExampleRunner.eq(16, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999.99999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999989999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999.99999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "99999999999999999999999999999999999999999999999999", "9999999999999999999999999999999999999999999999999."}, 49, 49, 0, 2, 31));
    ExampleRunner.eq(17, 8, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"49.18846913023488.09377.", "2943667.250.2430780.0468", "575.31.7.3.5.540.6.2.226", ".36.9083921.507357.31450", ".42.8777.168331.54.0473.", "12346856197.515420056160", "550.13.58193.39125.776..", "616.4.2962986703..6.25.6", "..04315.2.06.244421..328", "1.5533.021772.65.609.723", "9338875.5.4833.865286823", "3312.4669935592.98810896", "2.28940272666.22.5731.3.", "70199.3..57..71897149376", "93..41.02090....65852.2.", "53519..74868.58357356132", "909....3137.466.10627470", "..761.8..4.84.0619772156", "3...55.52605594221.9.242", "..93.294364.0343.4.42295", "5.141582555793.1.20.8447", "810.5.5..82.20177815.28.", "48.114.97090.3..020223.9", ".21.490.40.74.4..2..6..6", "1..41.0214480487591987.7", "..75.70.5.58.701.4.18680", "4..089978515.1662.418446", "8473.4445360.297..290852", "99640..84703049772997534", "2525399.525744480501...8", "1748.9144697278..2436.07", "50.3.7.114.31295871.1.90", "0338152661.79...3946.2.8", "9170.40176...15633112.26"}, 31, 21, 1, 0, 2));
    ExampleRunner.eq(18, 5, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"56.0.952169.6", "72511.4322627", "2824070.7.712", "78.625996.612", ".2..9.7146945", "32244.1253.21", "3173145032..2", "25.612.261084", "5.2605869.039", "24727.6545818", "236.61..8.244", "1233.5866342.", ".84059217.156", ".3.28.5115681", "2054.32336057", "83.20769.2643", "8..4015542.75", "1255.2.63.2.6", "21253.42332.9", "6062564.22119", "5.02413666518", ".3.6255.81311", "5215152.98103"}, 20, 9, 1, 2, 31));
    ExampleRunner.eq(19, 10, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"34642114155.1..4253.42.42411.4.2.45", "145551131.242...21.52243112216.112.", "53..361...66154..622.33.2.52...4162", "4431226.33412233.555.5214.1..622143", "36131361464.4141..1.3..2.431563.431", "466423....2642.2361634.4.5...163.3.", ".65.422162.164.2.31226.1515..1...25", "25622112532.24.36435232112....41312", "611.4413531.152564.65133.2..56.26.1", "23.5.35.321..46416624.1246164166351", "2.612.11536132.65.6.23....532254124", "21326...11556214453422.5322.1322364", ".326222..4.213535.312421542.6.26143", "36414....221613.2613245.242.3515256", "534215513531.11224.251234632..64225", "26221.51661..46.1.242.63651251.....", ".64131.2.4.6546.655.21.36113..26565", "165241.154.42311411.61...6253612363", "663.2646.65.25.12..15611..11264.3.5", "5311266112..24.2132.211216..1455.55", ".221246262..121132163.42..6252.5324", "451522413523.23552.6.6322516.214621", ".43....26242.41436.4.34624.521515..", "25.32164.242522114365.411461.411..4", "2125.311.22.252.2.22...152162.1362.", "45.4516422522433312354325231.5.226.", "6.41.561.14134251..33162.2.23611431", "3..456.612.44646.42134146.3.2..454.", "1266115632111421.6123.52.312.52.6.5", "6.1313313.235.46122224242.423261..4", ".16.2316.625.36132264.25342331.2131", "2.1.561143.46.64345.6..12.64.152.41", "32145321116332.1....1.55652.36.6..1"}, 31, 33, 0, 0, 7));
    ExampleRunner.eq(20, 21, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"21221121211211222.2111", "211..11222.21.22212122", ".212122121122.121.1111", "1222211..11221.1211222", "1112211211..211.121111", ".122111..12121.22122..", "22221222222112212121.1", "12222122121211.2221221", "121221211212122212.112", "121211111221112222.112", ".21212222212.12.121.11", "1211.12.2111211.222111", "1111211.1211.2.1121222", "22111.11.212222212112.", ".2.12212121121...21.12", "22.21.1221111..112..22", "2112.12.2.2212121.2..1", "222111121.111222211211", ".1221212.2112112.11.21", "2122211.1222122211221.", "2.2112112212.2121121.2", "11.211.21222212222.222", "..1.1212112.22.1122211", ".221.1122112111.211222", "1121112112.2222211.22.", "22212221.1222121121122", "211111.21112121..21112", "1.12121212212212112121", "122.1221.2..1111222.21", "2222.121222.121.2.1121", "1.221.12121.22.12121.1", "2.2.21.21.1211222122.1", "1.22.12.112221222222.2", ".11212.122.12211111.22", "11122211211112112122.1", ".1.1121211212122112212", "22211121.1.21.112...11", "..21.1122.1121.1121111", ".111.1.222212112121.12", "112122.2222221.2112221", "2222.2111122211122.112", "122211.111122112111221", "2.11121112222221221212"}, 39, 21, 1, 0, 3));
    ExampleRunner.eq(21, 9, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"19.9229.9199229.999919191992912229199.1", "2.9292991291291.911229199.2211299212.99", "219..1921..299.2129.2191119229291912299", "29119.119212191299..1.12.29292922991119", "9.1119922299992.12.2912..9.291.2219912.", ".9112919.2.9.191911.99221919.91221912.1", "991.19229..911.9199219999291.9219..9192", ".9929999...9212199..199199.9.121919..91", "299..99.992.299299991911.2921...991.292", ".1992..1199.911922.11.1..9191292.191292", "91921.22291922119.9..929292..92.2122199", "1.11112.91.992122.9122.191.99999.9.929.", "9..1..911112..1999299.19211129.2129.192", "919..2999....299112111921..911..1.29221", "2129912112229...9.219992.11922.21211.92", "191.19.91129119.99.299..29229119.9922.2", ".99192.91291.9.2199.9.91921911.29999212", "122111299991199992.2.222.2.11.211129299", "292.9212929.2199229991..21199299.111.12", "21119112199929.1229.92.92.9222192921229", "2922221299219911922299.999.29.1...112.2", "1.292.91.2211.191212.9.1292219299112.19", "22.9.1112.22922.99991.2.9292.9.12112229", "212.2999.1.99..922111912921.12...299999", "91219992..919992122221229112912211...92", "2.1.91999..19129991921.91199.9199299111", "92991191.211112.99.1192992.22..1.222929", "1.91199229291.211912.21921219999.221999", "29222992.2.192991..29.19.91292219999911", "..199.29199.9.2229.121999.22.11919219.9", "19..199.92991221.99929991..122212922119", "91911..22229....29219999.91999219222929", "999112.1.1.299.9.919192...2991.1.992...", "119912.99.9191992.212211191111199299119", "91.91299.991299.2..2.19.11911..122929.2", "929112219112291.99111..199.121.2.911291", "..92929.22...92..12292222..2.919..99991"}, 33, 36, 3, 4, 5));
    ExampleRunner.eq(22, 10, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"4696395.74..67..244208..01180.84992.30.2.6.9.190", "652..0..847877522.65..834..2.63....2..15.06983..", "2.72805..9651994.56...9.0780....6966.3.0.2.637.2"}, 1, 46, 0, 5, 3));
    ExampleRunner.eq(23, 7, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{".8810608221.25202658111258166.85.8.12..861...2.618"}, 0, 46, 0, 5, 2));
    ExampleRunner.eq(24, 11, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"28840101758.485724442.62", ".058.9225044067503541.04", "447543944302033728022792", "04812746210748.710.02274", "086335448149.941057247.4", "595811109622074789575984", "457717075445745497494952", "6091975302.0.9744.092420", "17.5446.4402054082171805", "704945.428972545.57..0.8", "302574.43327.02080606044", "5144020304988801027.1.90", "949444804234337476142142", "3105..5934087.7.0043316.", "6728.6.27.86823074822402", "444740509887478.57449844", "1154667..0440028803071.0", "9436279374729309351253.2", "223.41036287.70507789750", "2537.3.2410.3.2.20507675", "1440081144.35740840042.7", "1497.4318627429767014320", "920349.52812242..45264.0", ".0322430543.3244.672.8.8", "14077087...2434965798137", "69847837344032732754.834", "403107854790329542484104", "86872117047..443.4424278", "427727002.64.7..078..119", "560.877093819.0077574442", ".207426.777444428147.477", "202447629702871529.62499", "414470070324996846021082", "86.0.7949284281412600275", "77788404094.422140579709"}, 33, 22, 1, 1, 5));
    ExampleRunner.eq(25, 11, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"28840101758.485724442.62", ".058.9225044067503541.04", "447543944302033728022792", "04812746210748.710.02274", "086335448149.941057247.4", "595811109622074789575984", "457717075445745497494952", "6091975302.0.9744.092420", "17.5446.4402054082171805", "704945.428972545.57..0.8", "302574.43327.02080606044", "5144020304988801027.1.90", "949444804234337476142142", "3105..5934087.7.0043316.", "6728.6.27.86823074822402", "444740509887478.57449844", "1154667..0440028803071.0", "9436279374729309351253.2", "223.41036287.70507789750", "2537.3.2410.3.2.20507675", "1440081144.35740840042.7", "1497.4318627429767014320", "920349.52812242..45264.0", ".0322430543.3244.672.8.8", "14077087...2434965798137", "69847837344032732754.834", "403107854790329542484104", "86872117047..443.4424278", "427727002.64.7..078..119", "560.877093819.0077574442", ".207426.777444428147.477", "202447629702871529.62499", "414470070324996846021082", "86.0.7949284281412600275", "77788404094.422140579709"}, 33, 22, 1, 1, 4));
    ExampleRunner.eq(26, 9, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"12278089.6", "328.967928", "92.892..00", "288713.219", "1.725.8685", "8.86152698", "7.28....87", "28.232..81"}, 6, 9, 0, 2, 2));
    ExampleRunner.eq(27, 8, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"2.5098577260720672", "50774.504646706705", "657.75067070..0770", "48065.9..56068257.", "782066255778827554", "5275750..2.7776557", "7622060.7552750065", "665555797.547266.6", "26060255660264504.", "225625.52007295.20", "020782505.295.6.67", ".09276..0.620657..", "600709458.00400275", "57057645878745.5.6", "8274755050.2656654", "274602554052240068", "566576246750744705", "50.72475470.456.5.", "07.62525762767.657", "587767462654660572", ".07425652604822605", "5.0265677725572960", "5256520457.044..22"}, 22, 1, 7, 12, 3));
    ExampleRunner.eq(28, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{".820.8.11.7....06456070.", "2.082001.32.021228117.21", "38853.36862.6313862.8300", "012816.538.84221.702.288", "..5636858.1.6.2.616.6.02", "3173630236.80618636.28..", ".5.52088230.901080.88051", "3.18808766086.5.168.8.02", "...7.3.33.0.0868183.5.88", "338.282182.8880.81...651", "1.08.8201.1385658513125.", "5383.16106..21.4118.6312", "958.818155648168856.6638", "80625961121.3.08571088.4", "1539.858.0.3.6608..08..1", "6022.18081.6.3385201.826", "428016296805.964.308.361", "865618070882101.8126....", "2.8.4120886.686632.83.50"}, 1, 23, 13, 5, 4));
    ExampleRunner.eq(29, 7, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"3090206360186.26361002281..810", ".226328830.23018960731086.3187", "2682.123.3338.6.702898661.66.2", "0.68.602.6630103076000.378000.", "00.266.256.1690621082...222303", "10282.2.0.1.9.5.18826.01311861", ".5..2063062.29887763.908.3.122", "0..09.0228.2320.83626597250.30", "237.14826.86.14002172..02.63.0", "1.1.830338010002..1023602..605", "2136.0.72232211038864080008828", "2773226..500.229036.8095..2637", "340..201.08..2...023081.2.5257", "6613405203043..39829.059637031"}, 11, 27, 2, 0, 3));
    ExampleRunner.eq(30, 7, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"940.688.524268..30059709", "93..284.94.2922233099.49", "92.57..2099230..47.29909", ".237.444707..4...69.768.", ".6.5.92.8254667.40734322", "9..345.29879354.680.0894", "5259449037049.447909.354", "932898907289627657826.79", "64446993.9933637693.9922", "0937872.96423.2969.6.0.4", "9.029207.003723.74.73.29", "4004..66.45445.25929949.", "974.34493492204.4834..43", "669096.4900.34639.49.76."}, 11, 3, 3, 23, 0));
    ExampleRunner.eq(31, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"..81.2...1..57.10.11...8..28", "2..7..7.....1..7888...7...7.", ".8..8..4.......11.892249..0.", ".72.2.89.1..01.88.88..41....", "8.2..8.....71..92..99.788...", "88.451.7..883.141.12250..7..", "4..18.41098.7.2..2222.7.5..2", "..239.44..528..189.9.9.2984.", "1548280...2..8.501...04.951.", "0.11.7.01....9.1.....81.87.4", ".2......7..8.0..9.....19124.", "8.9811741..8..2.8......281..", "22..927...2..09.8....21..122", "22.5.032.9029.41...8.928..18", ".4..8.882.9.8.7.9.78.7.2.3.8", ".81...8821.8..90.25.1.7058.8", "..2..48.22..4804....07.1781.", ".18..99.25..878118584724.7.7", "224.4.12....4..18.1...470..1", "..8....9.1....22..49178.8.1.", "20..1..7.....82.84.08..924..", ".08.0..95..44.28540.970....8", ".3..4...99.287812..91.8.9.2.", ".21.812.420.1..83..89.3.....", "988..8.7.4718.28.84..14829..", "92..95.01..5.8722...24.1728."}, 1, 21, 24, 0, 4));
    ExampleRunner.eq(32, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"..81.2...1..57.10.11...8..28", "2..7..7.....1..7888...7...7.", ".8..8..4.......11.892249..0.", ".72.2.89.1..01.88.88..41....", "8.2..8.....71..92..99.788...", "88.451.7..883.141.12250..7..", "4..18.41098.7.2..2222.7.5..2", "..239.44..528..189.9.9.2984.", "1548280...2..8.501...04.951.", "0.11.7.01....9.1.....81.87.4", ".2......7..8.0..9.....19124.", "8.9811741..8..2.8......281..", "22..927...2..09.8....21..122", "22.5.032.9029.41...8.928..18", ".4..8.882.9.8.7.9.78.7.2.3.8", ".81...8821.8..90.25.1.7058.8", "..2..48.22..4804....07.1781.", ".18..99.25..878118584724.7.7", "224.4.12....4..18.1...470..1", "..8....9.1....22..49178.8.1.", "20..1..7.....82.84.08..924..", ".08.0..95..44.28540.970....8", ".3..4...99.287812..91.8.9.2.", ".21.812.420.1..83..89.3.....", "988..8.7.4718.28.84..14829..", "92..95.01..5.8722...24.1728."}, 1, 21, 24, 0, 5));
    ExampleRunner.eq(33, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"..81.2...1..57.10.11...8..28", "2..7..7.....1..7888...7...7.", ".8..8..4.......11.892249..0.", ".72.2.89.1..01.88.88..41....", "8.2..8.....71..92..99.788...", "88.451.7..883.141.12250..7..", "4..18.41098.7.2..2222.7.5..2", "..239.44..528..189.9.9.2984.", "1548280...2..8.501...04.951.", "0.11.7.01....9.1.....81.87.4", ".2......7..8.0..9.....19124.", "8.9811741..8..2.8......281..", "22..927...2..09.8....21..122", "22.5.032.9029.41...8.928..18", ".4..8.882.9.8.7.9.78.7.2.3.8", ".81...8821.8..90.25.1.7058.8", "..2..48.22..4804....07.1781.", ".18..99.25..878118584724.7.7", "224.4.12....4..18.1...470..1", "..8....9.1....22..49178.8.1.", "20..1..7.....82.84.08..924..", ".08.0..95..44.28540.970....8", ".3..4...99.287812..91.8.9.2.", ".21.812.420.1..83..89.3.....", "988..8.7.4718.28.84..14829..", "92..95.01..5.8722...24.1728."}, 1, 21, 24, 0, 6));
    ExampleRunner.eq(34, 11, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"354412.74..3.62473.21.429273560.24034...8.1741..", "4613544161419589.8.358023.95164515.4.1542.3.2130", "621...21.94.4.3351.3228411.2.3134032.3171543466.", "72274..5..580414225144531.6351203276.4272521.151", "3..643.32475476..14.5426.47752672414.17.434..13.", "2.351618..43..0.2.3.1.84201.1471114245.4219..5.1", "5..473973.621132.7241171121.77.16541.162714.2401", "0241212131.....3244.2.1..2..5515634.29.5762521.4", "5116.15.21..5.32.7.1245..942.34234.142163.284483", "1543..387.73.151442.4135.533.0413.3166722352411.", "325.3.302422461634..04.1.40241.633240322.432.2.1", "64.4..55155354.66..631.05.2310374002735..2.25..2", ".57.64.13133.4.2472.1.5.0504376.23..6.989..516.3", "3.2277.40..13303461.476.3353.141.6242..29.3.1326", ".142..0.251066.43..4.9543.3514..62.22.22332...21", ".13.6.209356.344528828.3112.04872.4..4.3.4.57212", "35.536926..43315244.81265.21.0236.7844..3535.3.1", "54.25.7.76.77.01576..563..7.168605.445102.77555.", "02..54142.0339.21444034021554154114764..1.045.46", "2..132.322.63213331.6.47.4.11452441540.434147.6.", "17683.2.4213744.6541314633..35.212.41223226.5.52", "3017.423.12.5.14..8...2006.5447836411628524..547", "2141141...313..4513455.1.4.6.311241171.5.2501323", "4661260.1827.3.159026.651130353.008045.31.1..605", "2....43834571.319.1048353223.2.116.7.12069844141", "031313625.54.43..355255.33362562.53...137666..5.", "1.234.15.222.62.2450244.1.516.796...504224212563", "914.56.6225.106585424.362554.2.72066631.56554212", "6521355511..165261.13..9241741..5..643044.33494.", ".2.21783...39921415.352546.8334.33.4.66523.0...3", ".4210462.3.061.13.323.56.34.232..3.6.4.49442641.", "22.5.407644..656.514...3225.47.6.505.02439114750", "154.3326564.114.444236754.563163411.2125773.5.40", "1.2258585137..126.0..2249511151.22.9.54246.23.30", "827528.01..231.51.30363700.4.1233..55736436.2613", "3226.31.3.1..23200538...0352.742.666..5145039335", "3...5763126.....54521.3443614969434.01313..276.0", ".52.35266671416.4163..41421171.5503.44311.14.612", "69445.5..6.5.6.17301922601..9112746112..6822214.", "220.3.44.327228.53.43.3.3425442772510.4.16438211", "3065683.2424.42555433.33367.69..6232.6..1148542.", ".623345401166.42183.21.220.540434546.1.8..156365", "1.21..1...41.7432.7.93671515....51.4.135.5652..2", "63.393....3.52713533467223.2252..2145924543.7.1.", "44.9.60.0.1123.15.4.554.05.5473..33.034.16.2.621", "4608044..231858671283753124..401..66115.17.6263.", "734......349536222.313101.713....169.53.8.412.32", ".13.54.4263322211..130.0.11.04..527.461714134145"}, 5, 0, 44, 27, 7));
    ExampleRunner.eq(35, 5, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"41.545.253245203..254371.22.831.4.5722.532..1.0.", "63414.0312173145..2.123211.31.25.452445346.65321", "22.021232142.675.1.1523.61423332513.25124440.15.", "12844021.411.23436030.523.32.7...52342246333567.", "3511462744.22...221623..6122.7..0..34.062..26.16", ".23.3.7..7.52920513..3411235.32453263.6144532645", "5534.53..534.5.2.1.0.3.0.449.62413...17561.34.63", ".32871833.023153342237...5324.41147732.42.73.262", "4.3.5.514.2.56.4.4228167910717943.0895.231..5532", "13452.10..40422.1257627.166429701.63.539465...5.", "..251.504.4371451.7.3.564.5161759.16.36111561.2."}, 8, 44, 5, 47, 3));
    ExampleRunner.eq(36, 3, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"....1..0745.32446.43.6203374385042.4", "1846..42.6465.825.272.15465..33.152.", "57133488349.2.5467..23..51746.3.4216", "6.2.1.73718264165.4.6023.3114.515..6", "5490342..3631.1..3.588614000.861.223", "73124544450287522248229..2894...10.5", "33068..2515.1953.1..1635322412.44.01", "653078..42.4151304.34.941575354.16.6", "35265.173..3265453.474.1.27.843..555", "352730.464.05722111.1...216.42358510", "3.3.21..61.80.6142.434454.1.12.40122", "10.7.62.56.0.55.9.5234.499.57....426", "1444113.4662422.421087647303.3.96225", "354610.30..4113...131147224.3434.61.", "683463.5211..2..136351..43238223.364", "44.53.32122.4.2.626.3.21.32647.01554", "4774.642351.5..64051197645432.6441.2", ".23154.115523034.11045243....5.5.241", "6325.7.15151272412.214..1646...31..9", "36..5308.0.725811501035723.1.5.20715", ".13611226.37336362.74.64356306..9037", "14.721243....53330.552.4..3474158.1.", ".341008.41351.1410.0704343.1....13.1", "1414521510.10915537064.62.33..21433.", "32332241936363138.9...15.3625.0..221", "1427.7.40.559233.4.993.2.52.92.86042", "5163.2.622.17..4.55.27.87541474..117", "112110266.16355312.9838..174..21810.", ".056.42..53792234.11.55.459.69.49213", "313.5443574943.3.22170125861754.66.2", "112574129.34.455445.22..74.2.4316443", ".424266112436126215941.35120241.733."}, 31, 12, 21, 12, 45));
    ExampleRunner.eq(37, 5, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"...52158274631333.2151636..4.4383314171", "334.63..65071.143.1955137241111233..6.9", "1358547..3.3.240.44.538.604443.47500.8.", "5.6.9.1.531472.390.221.8959533371.4.434", "19534.3.51553451..65..7715..012..621438", ".5128576553.325131....166..6112742.154.", "..1.132041.30637114714.6..5.5.7255.8809", "2143..77.6.5522212..45482158664.57.5542", "4...5119003.5.12.06462.2.404.541437.383", "3.8.13131105512994.1214135.27350.1.03.4", "2.2.43..12.03724161234933602..6266...7.", "694611732344671..6.1454721317..3640754.", "..1126104663116926.23.06424.6.925.3.426", "..2..264323452403443.3.1.525.424123.403", ".0413434.......8.3.2.23435...61465500.4", "7616212.93..3.1914313.2.682451725.7.7.7", "4352633249541346.0.25..6371121.412663..", "942135503565.2455.74.513710349.22.35464", ".2.11135421..4.31.323.031.4541811511446", "05564.5..2..5....823020.35.414...254..0", "71.65.235.379574713..7..4.26.1761405327", "7.1454.01.31...615.74.2..6.2...4..73252", "233311.5.426806663371243.3.132256565432", "4.4.324..62441.61241582.2458..7151..319", "18950.36.419.7.5.4242.1132.341.36496203", ".327..45.650.519.27145...25634738..5811", "39643051.56.028.292517122119..62833.391", "137.3830.1332.44034..42..53.919.3465015", "72.0272875.342541.5.8633.6.36..3.52.244", "..4.35354311.5421113990.461374.3312543.", ".4..32333226..6720.5511.40..42526319521", "7423207.2955347.74.4...2222.54.27.3..19", "161476.634264.45046.1.6166455315810440.", ".3.286516..4.71.172413641434.1164..2621", "1..5.466416.1.330.63..44021063181.2.264", "56.3668.644730.51.515713..36210546..268", "7.13221511..65..4.2..06443245.115138141", "14...3.85674391624.4.56815067276745462.", "277704564.4.4.42.00473.1.372.9204.5321.", "7.2721149141680.533510613555653323.42..", "..1056.302451421565121433525.14..463.44"}, 38, 8, 15, 8, 49));
    ExampleRunner.eq(38, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"32..", "0134", "1761", "5542", ".133"}, 4, 2, 4, 3, 30));
    ExampleRunner.eq(39, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"12.4", ".384", "3412", ".353", "3.4.", "..47", "3.67", "9456", "5414", ".7..", "1.18", ".6.3", "23.0", "1345", "210.", "455.", ".548", "1252", "058.", "2612", ".029", "2522", "62.1", "65.4", ".100", "2501", ".5..", "271.", "815.", "6601", "80.3", "4..2", "..2.", "2091", "65.6"}, 0, 0, 28, 1, 50));
    ExampleRunner.eq(40, 8, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"808.353775..7760..369989.3.2119924857..02..85", "2920.8.7476758874387..09.0.8.6..000.9.7.3.677", ".09383173.538..0..0..08977.6.7..7821.4800.48.", "4991.70.1.58997387938.0.60.657474.9079.770329", ".55407..795889.1.65.055.1.3305..9409..768..37", ".5659260711555695357505479.590.762.0631.53297", "75..96099546280458877..9..00.996072..4778...5", "009882160.4..69702866648..389..9.858.60.239.7", "677800.74860.099.68793412246.3.597..7.4.68.39", "7.8.70895..7056349..894600.8.055..37..2480.85", "1.8..6679.7991797.94113047854395052.97665.10.", "89676987.8.62086..7015.88207506...72718696..7", "644595600094018077.50..183.00.750.89009216627", "04070570199579534830500693708978.700.80039496", "7.8338728...6.7170001......9190989..56..5..99", "6.37.47.05..460.7982867.57325..9.028495600557", "6300.2829873.979746860.1542786.08.06287.3000.", "7.5.2.32.5707.9..87.9.066.87.74757576783.2561", "04089.57.80.379..40587913.06367287.450.49.0.5", "..00.586098.901175800.5198.78..68.7630.3.7077", "3807407259..868640.275682768800.805.0.068.525", ".78.6.7910.8775782187096010.73469.529.....763"}, 2, 5, 20, 35, 45));
    ExampleRunner.eq(41, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"9...701725.06.0.3.5.68.88.69599077", ".07079569.5.878.6.748010.697720627", "694.0.76.1.502566.77.5.8.6..906298", "..87168.97000607....7944704.1.7091", "7.719389482321000793.330260869..65", "0079..5.07027092575777.7243.2843..", ".7837998.2875.096724157559.7.95.40", "0.8.56...3...4717860.99.38877.7882", "5.83.77976.0778.77856..067..060558", "7320.86.8.63..952122178.5855.9.7.0", "7.8.94.17702.44065704.981950330909", "8..6.6..8.2..825862504.55175.70650", ".36.2.86.60..85..53.87.1..9.30.046", ".655.1..08567399053060.2002.075..8", "18..6.6.1...8.1.07.99.9..94262.7.8", "636..7..56.65..4783270..44.1..93.0", "0.7.9.473753....05..13205...3.0397", "066508.5.82873.70193202005.07778..", "..793446..7.38...2..2.50..66654539", "06.4..05.5..39.2901000.754.8804863", ".21.7.3687278.89.89810..87..040.62", "..025887335..178.888622505714.42.5", "51..721.00.789046767.7.5813.403823", "79687687.53.78702470700..5.2.05699", "031890...776788.820800..2..72742.5", ".759541.8864706786775951469786.6.2", "046300.74578.006862.7662.08957.6.3", "8.3636..18.106735079269.104.7011.5", "70.59..7...72479.82864982184468.66", "013081.781.0..8.60308634878340852.", "5..3575181.305456.87240.74.070....", "11564.712866..5757.6438153020.02.5", "72415699.8602.7.0.19.7.08..80..8.1", ".377.415540.2285.7..76950.2.701458"}, 13, 24, 1, 0, 11));
    ExampleRunner.eq(42, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"70", "10", "70", "70"}, 3, 0, 0, 1, 40));
    ExampleRunner.eq(43, 5, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"8.0.6980988.00889896.0070875.", "00705370.8.80.90760007039742.", "900.905077.0786549.990.402089", "6768861892020499900800500904.", "90337...079890.0.9.0.730.7099", "7877..0.9001990.90.60068677.8", "08090890989990780703396600987", "908606890979707990.050809009."}, 3, 6, 2, 17, 17));
    ExampleRunner.eq(44, 4, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"0698.70", "0000920", "0080.90", "9..074.", "2508900", "9740970", "89090..", ".909809", "0794...", "9.07677", "0099..7", "095.889", "0970008", "0089090", "7099277", "07.2540", "...0864", "980.979", "900079.", ".560.67", "1990995", "2090990", "81.48.8", "0980000", "0796069", "0003397", "0889.80", "6898608", "8299970", "0..0003", "6..8772", "505.907", "04099.8", "7697298", "69.9997", "2399708", "0003800", "3099672", "90.0090", ".880050"}, 10, 6, 0, 5, 9));
    ExampleRunner.eq(45, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{".", "7", "7", "9", "9", ".", "0", ".", "8", "8", ".", "0", "8", "0", "9", "7"}, 2, 0, 11, 0, 18));
    ExampleRunner.eq(46, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"8.501887009.6.9.997..00008870089009686.9889088.0", "360065390.0009.099970819009.99000618990.87092000", "999.40990689099100.090.3800.0009999094..978.0007", "3080285.87.98077008.8795044199909700070900680.03", "090810014680060..00091996029050000960.9813969949", ".798971098.900.0099796009.6899592010984512042088", ".008948700009890901789..00220..0009.757979924770", "79907807959019079.713.099.00390970.080755159080.", "790981940967795092034799907.9990600029678.008703", "909097.8867203774889500.030891.978.009.906069800", "08989089594002.80990999.0.5.74090969907099790650", "000.00.0000980789.59.9.9968..00005008.3904395970", "9..9996700600750.777790907785090.999800.09000770", ".096..00789997.80959.99059782090089.790079903998", "8077.19000.70990670.20.9.9.189.0079.950.80690006"}, 11, 40, 12, 47, 14));
    ExampleRunner.eq(47, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"07987..090.0.9.776.8.9.4", "9.09.88.8.0......9..0800", "..70.280.8.9900..0.0.0.7", ".6.....0007.8900..6098.6", "710.70007.9.9709907.78..", ".0.70.79.95070.8.927..90", ".0.0060.7.0988....0..9.9", "00...3...990.9..5.19.088", "90.2.....0798..7693.0.90", "7..6.080.77.1.7.09605056", "94180..8608...0.009....9", "9..9...0..9.90.9.79..99.", "7.809...106..0.7.0000..0", "069.9.8..90089..916.0070"}, 7, 11, 12, 5, 13));
    ExampleRunner.eq(48, 4, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"750606.909.0.8.90", "9.90..9...8.26.99", "07...9308.91499.0", ".89.2588.8...090.", "4.73.8.0...2.995.", "821...078.6....5.", "1.5....8.804..8..", "00.00099080....90", ".49..0399.0.0..49", "9890.97.1.3000.79", "90.99009.0778...7", ".094.90080.238975", "..6.0..300..91899", "80.0.60.570..0900", "0...0...80.9.1.90", "07860..01009.67..", "099.3..0100..2007", "00.9.06.500....00"}, 4, 13, 10, 2, 50));
    ExampleRunner.eq(49, 5, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{".0000500.988...000.800500.0.9.00..4.10....0.", "9....80.60.7..047.7..79.9.07.000.986.0003.02", "0019.907.30500.9.8.900.86.85912.08....091..0", ".88...77.0.....0018187.20..3850.89.06.8....9", ".79090000..00807.0617.07.9088..0.1.0.9001..0", "700..9.47...0..24.609.698277.3925..0.90009.1", "0907290.020908...7...99.09.60740.82..89.8547", ".0001.9.8007..78.7.9..840.00.030.82.09927860", "0.1.098.09....09.8..9.990.993.78990802.0..09", "900759.9.5.0.880790..30.1..0..6..00...0...9.", "8.89090.909..490..090.09.0.800.2.4.09..0.5..", "57.1..8..82850.7.9..879000..0.99.188.908.890", "5.828.......08.0..170....0..00.90.94...6.71.", "....8.0909..9....009.2.7....090.097.10.3..10", "0999.507908090..80896.19...75.0709.8...08040", "0..890....009.0.81.89.9008597490..10...9...0", ".9.0.9460.8008908.00.70.00...7.7.08..8.8048.", "8.9.98.0....7.000.80..97.59.5.788.0.7.7.00.9", "8..17...980599..0.37.7...0...077..5.939.89..", "0.809.80.0.8096.98.0030.997..0.0.7.0.20609.0", "0...4.90.6.9.0096.9..8..7..9837500.0.5599004", "0..1.00.6.0.8..90090.4..55..0....80970..900.", "..0..9.79.....9.9097599.990090.0..03.0.99809", "59097...460..0.1078..9..7800.50.979.000780.0", "07507.9007.09.00.700.2.90..9.9.8..930.00..78", "839.76..98682.0.88000453.80..40.98...9.0..9.", "999..7.9..88.....0.099.008000908.809.000.06.", ".049...098089678.0999..09.00.6.91..0.0006.8.", "0.0...062.0.80..19781.70.00009.0..9.08.80..0", "..0.2088.869909.9599.00.99078090.9008307.2.6", "73..371000.8....00..9.9..8478....08.97.85...", "9.85.300.70..045...7..400..799..050.3..060..", "..099..0..0..7.0.....90.9..9998877090...8877", ".0389...909..778...0....009.9..0..91.8..07..", "80009.580.52..907040.900..0....79.5005700.09", "0.998.60.00..099...62.94290.1090.07.97.97.04", ".79..0...0..8..80099.987..97.9789..9.809707."}, 12, 6, 4, 34, 25));
    ExampleRunner.eq(50, 10, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"908067399090808094809008988071.9006089.5", "810.79859388099.0780907900..690990930.99", "20005.86000.3958140990096680677400779079", ".9917189090995099993269609707007.76098.9", "090900890000870.088799830908373750081905", "9970278.9400898.088707808807.00690090930", "9758980092099900089001095009979889977806", "0007098870893109850470806090970990379801", "8690906008.7089050008090088.949860090190", "7940007745589997500.0977063.299980050300", "9080908908900919.99100050090590063307780", "9.009599920900100010809939.6709209.80578", "9100.590099698097908.0099749.70960450002", "09566808.7070900404430990990890088980709", "8029089069099286079907880.00709000.05189", "89900000867809.09.9997879089798986697779", "080007990707090600000.730.007098670700.9", "8009809100009809099902005000609008717688", "097..98080640680990997750098069790699970", "7.5068090607099988099.07.0.0500900007070", "6990884..5983599050760006907989077999099", "8008897903937967780096007692808.400809.0", "890007999688.807006509.000.097900910.898", "9590809599697508783.09000000957650909008"}, 21, 16, 7, 34, 1));
    ExampleRunner.eq(51, 12, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"908067399090808094809008988071.9006089.5", "810.79859388099.0780907900..690990930.99", "20005.86000.3958140990096680677400779079", ".9917189090995099993269609707007.76098.9", "090900890000870.088799830908373750081905", "9970278.9400898.088707808807.00690090930", "9758980092099900089001095009979889977806", "0007098870893109850470806090970990379801", "8690906008.7089050008090088.949860090190", "7940007745589997500.0977063.299980050300", "9080908908900919.99100050090590063307780", "9.009599920900100010809939.6709209.80578", "9100.590099698097908.0099749.70960450002", "09566808.7070900404430990990890088980709", "8029089069099286079907880.00709000.05189", "89900000867809.09.9997879089798986697779", "080007990707090600000.730.007098670700.9", "8009809100009809099902005000609008717688", "097..98080640680990997750098069790699970", "7.5068090607099988099.07.0.0500900007070", "6990884..5983599050760006907989077999099", "8008897903937967780096007692808.400809.0", "890007999688.807006509.000.097900910.898", "9590809599697508783.09000000957650909008"}, 21, 16, 7, 34, 0));
    ExampleRunner.eq(52, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"88090569.070909", "005095087703000", "09988008709080.", "06000763079.779", "9088992709870.9", "009080380007098", "709909089770000", "909005900.09000", "38407879.700921", "790079059..0980", "9090255.9300030", "596800660050099", "089029090892359", "098003005905901", "007609090078670", "987098359404976", "00298006.770988", "90057787.6.0990", "905018180990785", "000.77090000999", "0060048.81950.8", "78980.909.0880.", "0890097990900.0", "604918409980019", ".60002099488068", "9.9090.09907806", "077049707559000", "009848226090968", "0793300700.0080", ".70900.0762909.", "9700.6300047009", "009998099090099", "00005.048908309"}, 10, 9, 11, 13, 2));
    ExampleRunner.eq(53, 10, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"533455533347832992273431823074448455311632", "292197365386465464195440245895525122921234", "533305455529614143722492741433119104742480", "421532124961152264385892337503215361248545", "320516742117442968215414425445654386659194", "411804325173212419244304767646113253613166", "417844332576552413121415033942668221831504", "157895203314654252114434287227322262916019", "492161981214531422151840515117526014141762", "011133305187520331311511055141942525122332", "220223120105641122877246351561419412451131", "322404583251013546748314522515344205534642", "321381236664917238420240489524933572652445", "613535245236795354920838622146588548431524", "452217455441031211531222522714456548101345", "115233058585050211345287557810222512159434", "235227924240172050557329205245345169032153", "562035059812337523329133535440423977281238", "173842914450331501540618203366332398244708", "312178221208689633457453089154175991878564", "423116121956955881494141230153224505419252", "141344152265356034353049251702154755433555", "150753955238254912824312522540342311303225", "129361453151719164525125555145654612324389", "165143182792429934269521559718622323443398", "442412531512339321859657223249124932215244", "499102248534423431428512031524231731122402", "243564235218117275651944525173259326825417", "129433226350342212437176435295558222541148", "103324235511143641425141375106056064214834", "446108545442446623421074412145328688521452", "383254283943411672171550437575724218333989", "835981650725384314053141191140131299354154", "513912318370189701754841417511237338434143", "129510502847044732445396317923095053003784", "342431603113931700709102447513638042538144", "114244202616053301762535521132512223313584", "349409233327271801551140115422756683318621", "214205939534514168352516214573414111343323", "455551252133951104442122524217251913421844", "716827339516471152494244514340945334238659", "233211155246324851425545235564304584347533", "465128235328532425445192533467032234620452", "312341123322253421171354443411326213361311"}, 9, 16, 39, 10, 10));
    ExampleRunner.eq(54, 15, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"2254175247585334644303934465535543242655534345532", "3424449735444275337184518945556738353354809326941", "6493202146534444735063863289130879109314975432723", "4316179368319398398403470933734345154083933843663", "5330610633556824067051974735507330311373449331537", "4345339255654184304577336457285531344259544144484", "9437545314391933255344980044438473345757306499515", "2315395342650343409356564954473523343855043156316", "3449934890463084335213345334432655557346374474816", "5379435549371945514843245432438055900455484487258", "5447575205435483483957443841199544403123655334554", "8505049980079534335337104439073843547545544426839", "4533636345331274633369834433353734217933545554237", "4553467911353107315230775443560045493384322532443", "2553448872552596981364485216540615940737984244843", "9514291318858554515444437473434394714845632586347", "6733340533155453355203934522759542755740045583728", "4386332833593344201941986569497036649943313445755", "8509485255554583443364575033789549598425163541864", "1235503535435354754359342873655767448623454970455", "8837260053638505145756332202556441357354445425232", "5054385387855415564049405924134633342971655315964", "4603300324348162433314160485353543163103436344466", "7173253448722553535538255413970697914259142305451", "1340415928898586503753813120561524555445345325965", "2533435445236733487844283306363444676443244835375", "0505786384457813581233365213389459948556314004354", "4755143355545915844523635633195464278404350741445", "8962507431436093261575745595133931102844005605934", "1735553349483333434358364161194275643076935357501", "0368544534639815558545553832433450434797352353837", "6034596538142512035734295457385198457331345395499", "1635833361555555334454591086485559252488445233644", "3016508685363643904383648852515915565545364547747", "3655414455253168655413575244073358729355853161055"}, 34, 5, 3, 48, 35));
    ExampleRunner.eq(55, 10, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"501043255539537483564645885545045143452", "334529447847345334833435441805359.33298", "075230555448634408422447550083220935333", "969163534505142838346459554391727735311", "802518934149715175745839034885068453454", "958260611594410415904434582845355464574", "94557763254413.588165743593262957848944", "238552530650445925354463450355660555143", "348485180.25564931379956955854109358709", "703594198445445453342584522693014474635", "871535384532221513584226845350358434383", "986109450852503381248305153412003043.72", "359549082309339856238543745455435683681", "232165193825093308147630499891015435335", "540449559865577640949360943866454413508"}, 11, 3, 0, 37, 33));
    ExampleRunner.eq(56, 11, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"3996148673034474916531432340435735", "8536513551364475145750300540795553", "63333346.3317545415639609898762835", "3598492803442868921923743545463654", "9343165540532553515451325823868734", "3440370932805524285634548546562147", "2554806614442855593352349144393582", "3620646338398832425955043335847249", "4364413003245553841993343330569416", "7514538674560551645337557441251932", "5364350353135893134814567742013533", "2804287414432677593354445443185307", "0467915347138.34539958441435144194", "3958419851825437535157826955381670", "5548409537165034112039336637548413", "4555464874816.23352512440392835533", "4643535444695051903464198035743335", "5814559477562565342441509443861582", "3604474058835329873573155356842342", "0804974143353456963340401563134145", "7553504389575859333633537073332326", "5704184063855487444193275437947548", "1514810095475743944353124053524504", "4274363577433516084307382035644453", "0133604455266482630214453439694715", "2156434934525550095443773805532250", "8435573332384372734547654407898144", "513355574003427714981343453455.514", "7534566833043173397843476260685878", "3491544787390427353744354343134593", "0615534025434692754333494548354445", "3365425841954051383810549335703133"}, 27, 3, 0, 30, 6));
    ExampleRunner.eq(57, 15, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"517583474082145408954334143", "405856736285694020650656302", "715355744548456157550545534", "555546454258534583496354437", "3226653422.9434409057338255", "52.443532356455431183089.33", "049513655039255934756985205", "218414564743554572364553453", "383803654333836294553.81456", "734044334523344447356634133", "3912735.5130513836473437303", "53514536554535.432544483545", "555948554482055583645921451", "755434339195545653432705517", "555843594925835581355430512", "363356743103514308857195838", "80003745434055292344444.450", "04404525911543150761.054421", "44845406959550535243333333.", "983247104424573344072335456", ".13120334245607355582109343", "08980202314556235329.648.60", "934334434435842420545055143", "042144497831493077341335033", "746143358728523753352205338", "94333514346845244353..55376", "821815340044404341585958954", "5134145.5331436967324454161", "068541903553315549357289546", "155374348350436759424441450", "445353973416443495383344791", ".472.3838347468333553413545", "337443353545570448472659202", "475320054382555435580538715", "845075507524254343185654737", "720414313864645363916236514", "307280342653152545394586410", "383733543565954352445276755", "4275457403254943915389535.2", "4673390057.0933553013184973", "353523445455245349516728236", "545073444589344050505656558", "463446145491151005504774453", "336295442356717034135615395", "643955795542666459462195555", "496163479269834113861839247", "715555464533641544345544645", "653554430267641235319745413", "996674151414433307433153247", "6900007873.4445918340393428"}, 46, 0, 0, 23, 8));
    ExampleRunner.eq(58, 7, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"3", "6", "2", "6", "9", "1", "2", "0", "3", "7", "4", "4", "7", "4", "3", "5", "5", "3", "5", "6", "5", "4", "5", "1", "1", "5", "8", "9", "8", "9", "5", "3", "5", "8", "2", "6"}, 35, 0, 5, 0, 0));
    ExampleRunner.eq(59, 11, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"45554", "335.4", "03352", "44334", "33555", "50.44", "55444", "55545", "44044", "23533", "44433", "47344", "43375", "55454", "3.534", "33434", "54545", "25533", "35435", "33455", "53553", "454.2", "35463", "36003", "33543", "454.4", "35464", "53443", "44354", "33433", "44333", "45575", "43433", "2.344", "45954", "48553", ".3534", "55445", "31553", "55333", "45744", "45434", "43534", "45354"}, 41, 4, 4, 2, 48));
    ExampleRunner.eq(60, 11, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"5.5537344355434", "454344535435575", "435594353434553", "33.5345130335.5", "5.6355574343353", "453435356454344", "533345555345853", "434334343434535", "544546503754354", "453513.54453343", "433514434433364", "835454533555535", "456534345573443", "513543354535354", "555345555854325", "334354643759553", "55944443453432.", "433.54453345353", "544555543345345", "35.355645454635", "315434453233535", "435534335735534", "3343553435445.3", ".4455455.453433", "5453544.3553543", "588455454435324", "545523543354455", "944533335334543", "553553543553353", "453544433933455", "345355534555444", "434544535533335", "433551453434542", "434343543455445", "354345354533445", "454..3439353554", "336454555554255", "435543434934354", "589545553454.30", "34348334534.535", "455435553654345", "555555425331344", "4344335.5343435", "438445473344334", "354555553333435", "54055.554303354"}, 45, 5, 2, 10, 50));
    ExampleRunner.eq(61, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"5.4443533454345353345455554333543554.5544344"}, 0, 3, 0, 41, 47));
    ExampleRunner.eq(62, 8, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"2542.87453762661820.435.75172.818.3347.4", "14731716.85574.832.25556.5.9.346187.135."}, 0, 19, 0, 9, 10));
    ExampleRunner.eq(63, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{".45.37824.66266.272.244.811164242.6385844821378", "74.866.368164274.8.4685736447656.48113.8453.551"}, 0, 9, 1, 2, 23));
    ExampleRunner.eq(64, 244, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{".76121517933412816.561372569731875349512872164517.", "2938763432943231556946411532975432835.447677842596", "42925566134976723135975717442.55818453958781287948", "88652973821836924763856933473757924861547333254232", ".588832.271134542756597316826397813314494546824486", "68293886.35182464976568845965882137931478715.23482", "3586.635212379747874559531874369651628849654784339", "131636.73422542954873233941477782956827153.7662218", "6354324315183514475413417.275277176266788.44771845", "161656461345878.25151352436712.2447831272561167358", "422216156571666543433.68162565865213.8156456141297", "189534111574925822285371318465582147.5718286432.41", "32563213817.54726136.3767789446373524483472654.615", "96528185457186711124318445734225639211358477256428", "565.4761123615931116537938433762956724155439416187", "183487.716463477163978521162.687265639541864449737", "868156294425371169.4187146975512132974183165535129", "2854951581182946577863944566145.532387825348573515", "175769542718473661768443975883282934582446.6445423", "15381655193876354221896343116648778177721151111294", "6592158734434475.836171141166.367163.3326438784976", "654362116376665..475281166693577321148812.43188247", "951513255589442762216887455528133757.5766.73232355", "44894166333282937227861536111732943683282539856123", "34735536.635.2561413583.43153746757732384654395375", "2126265978.7618132641.5882426265818662296513674359", "7788.42234824126393442671792313686697852815426.434", "18114.2113411423152154236672345321781476.436582841", "41714361766159754364546251887318742636.24836511794", "17975883722165252.7465835313434.2776.2415288218966", "695511884144526773543177437.4543112175568258157458", "93546771178936271432716691767834379218783463243512", "58254676772516966774112358412638936751254469571725", "8728147411318443.817763575216.88651882643.56276322", "12256469242515823677923471552961544321868613135149", "6748765769.35178157.585212629832743873145714879446", "67575923236367811422467.21652835757951582587366851", "21497672646492622384294321726285823275.26123513292", "6695.518244143858.64168731316248212.36276342415948", "2.64282326375274126775874223536.431831429536423518", "933761125139537563.21522287948272413.2826656692357", "455576416772533.7542383275345437.674571164.1745215", "11783293.61482788748235459712215829261611879518213", "433828347711471577.3512645.86838555875835.84214886", "86152586828828854225614845732267936178213385631788", "37555981175345765369457882429547767849682628469677", "566748262665462.2486354592672775627.537325826545.4", "64937565856865276968376832213961161744971778285936", "298255181765.6588625795583346494112318592341246293", "9652463817712954163186961578517.71428245925578156."}, 16, 17, 10, 9, 50));
    ExampleRunner.eq(65, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"923723284.7.652183463.28881756968287284.6343214719", "8933466455.788614149452284179358161669358861551974", "776941172486824164429714231479435871347882275.4473", "72335567215588386854678315654769214784365218523822", "46713351215233.61221355651397412348265556474232273", "43287896647621395852243794652674597521128627985711", "42778.7941413285955288162961811584965111545.732345", "58475741.448325158.8857653751734752365462.84861881", "163256354462216418668.882512836451778612.856512573", "1586.775785927482335655838361868.77.76824714687679", "13.748677.6718116.464824169341263613.4541171175954", "8689532218537.374578673.547667.5.58.34222383495585", "69542133346882168712935487856968721246366938833467", "9258347132935437247.745838139252611849481371542498", "344564538637.4416385652252725157846814111136945232", "1861388752228853333414.8271186257.671817153.388711", "531365597578128664923768562118.7.56.262.68.5615456", "132167974484215818483978.78851515112173..641283165", "67743576232.78726183186.2.4.2715.54.74163261764439", "7877..65.28217...518815232974211251495543816148955", "544.7652636149654561154.7.5.8163.74.532215618.4468", "2.464522541785....77721252366137845833632975832327", ".4417172283885858218472.41153513776775682678748298", "48986654123248..8.5.21472121458843.411332637974272", "3246871576.466861567844721152765262235451749687142", "2181253944587215139558.631722331186.8..578.752.245", "83121893871321464.77527327449438268258489746187374", "32236446785984533555794878715792183153397457338689", "2614..652.3545..6111742435573676123568668883248924", "1679345775266.3721376454.8872634557347252611496653", "79374181444473533686534328822659131772146944127835", "953852815138.87777121745451481782934482835882182.7", "46973758625677338341635629752238469811838563951263", "67588817639751835168987283623274837231754449434335", "8162772933762731429431668529438377359476372412.475", "325435976662216814577278784562447326216548.5115423", "68164.6883498511731545.732277333842167.96762211479", "7613..587835538717646627211633.2471327468241832957", "5459445818834.34517563.418782924531115536376767315", "2.6477875648622881685925721815743.5175457584532637", "945821126716.8336411646496188186821422263.462135.7", "511718717452.6365881164868665616518125181575275633", "6746385545.45878.53871836936277265933417433.565314", "1378786.145811143.25412514.55128214.55437466928453", "131485933.738275629517265629635634549334187569.372", "274411716653236728362735657.251635817742578283273.", "415256.47584414187393316326495382326771758.6858256", "867972287284559287864359872785.7323874697341115266", "79144887215966872725892477855828717814978211817938", ".256431538465.518884639362825469734384559555784429"}, 17, 21, 37, 37, 50));
    ExampleRunner.eq(66, 231, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"946163765.28862582976286417.3312384695672373737495", "5.71467443976437856964417846946711447.642167831941", "48974486547975766235.55136156968827514678876936458", "5271162782636951178182954511845851684369464332414.", "458466143546.764677569688735535786862546135117.517", "21145941861833936732835934533534.218132651.5517714", "44376596516845795478686395126745475121749454831146", "813.7568885457.8945436768953566265.757885556784749", "33433.88232223455.64234583356282245146738.26261327", "21436741941271167.711328159566328462.31226835572.4", "812216873.65762835.6371475772771264926456726472944", "339751781635733424746827484.8756488656822418968651", "59316345137.492145858285415.4.231141143.7548322383", ".7458256549354722149635717169488225528254328393771", "25469531672351178277.34531812.89874112156594755675", "488475957662312513.76..3767282.6323851449436668652", "867955414126675.5146842968522863.88886963688217759", "81147957628417539637165859345871659415624373789575", "24452649812564.63816341147628587452233544.74576594", "26327676.28873765734123595311278683953752211686.38", "839874783465.61686135466541132.75.2453141678985232", "69518688852469631722254.57836241826646892563743571", ".4447256659752228614.547238.5183351795156643693828", "7118977712364637751833548466874.414228355292865321", "876446.2456432434543526514967622154238729855783653", "137966684512321862365.882644537658726522663481776.", "68544933563126459361124242112.88..3116485472155656", "256863896826825155.7671778474325883635925633317496", "433815245.275171414.55854552671347763.632222534951", "679771318257.3227752358445215129856242176.47964213", "49731121157479441211264338743382377813852348713342", "95625738589317128215786.432573174..447781331159774", "2818.5665348238.5422685693476176536126373598767823", "842755925732827753542418718.45.7185231176254665377", "41795773.24126762.658628539684387169734531433.7889", "88556964652387349646352651854695413373396521152172", "846357794163145253.5466553728544.331336468165166.3", "58557388584.34437562963276152736628295455721285.54", "369348862442.6821333415627831545856228322472624762", "2974818565468936728817946412715921738867945.362147", "9752275573926813883921416782.667838329345738859412", "2881247.48624416121814717814.246664528255.15528131", "51651395457318295511348497586181795187246694546723", "76262455748818.616525332583.437734.488823643657866", "61733976.364875629681784849764287679462217839.6673", "146.634524866525256432254.77838235466.351311274633", "836781653276726267978186565.3481186593468118178165", "63963762235.73173454964518582.61212765973536414941", "797253432153941212852.2512145593482345495542813796", "9617.34477714.54861466924168445976432552973483187."}, 7, 16, 43, 14, 50));
    ExampleRunner.eq(67, 124, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"074183833935538833956717244.4378741796178384344759", "293453718711651712253948761457.2371286492428273493", "8.576541435289816863837963861747933413435.67714945", "76588818818663113713655.5662243238.77..41527427638", "467.784233876542.67753434723341837.48..71161366577", "78637837.36772567.2622744297818775194813713624.736", "38488965236846.3167136.564211179347731833689617262", "17117493428358596556618792116828796656783394343885", "2587627882812146743.73717445.46417.45..84173235147", "144844821174.681268633411236.63483.53..77238152539", "566276586112373216..6111883..61512.67..352728435.5", "8938776285643.2847625133187..78787.37.631823552.48", "56411738.83983741131845.4313811583.88...7568225517", "951412257..3816132462.5516371474958761832.26597446", "4788244.334374364455974462757783257597152415749416", "37151361211287166111237448463896811142164139842611", "536.5495152148654184679235812369581211124793578848", "28285964171867592128775719351145214.24462265984266", "839365328876.64573152832846.371813.48..87137421459", "5234.51618584318813134354164413476.66..441188417.2", "898525372218895148.581775263136115.47.542222432961", "77123872744923811585644973126326735.3458.565143568", "9862238652.575282617295722488688938631124886396473", "4831773562357772186656661787542322636672165543.238", "5385683.63174183717.412224529224388423286729436864", "83668794821248565975.58253455879214132878..3773783", "776.4975181254895411311367214714175371343258971413", "75.764827634938636365135.7686615663863493612626149", "764598113.564644815712958768223586.66.231112576396", "49467582868639375227343726836322656294461711547971", "45723718555926514363477956171747478933276721335781", "9878518577.5612781153.7663432745966777382711887687", "2118715693363421367513746492326426741648.865169877", "81487839534217869764168539466774824458677129634118", "7714559887613356585678336416.774284123543562726656", "21738.45881825393583533773533965776812928283624754", "73.16658726595688882638412714483376184598555816159", "75829411131144..56.6856318415772243878.876575516.4", "59354262828788768878518614.21765437232675511554.36", "532148218.3926178237567933814147677913122185396782", "958673543362114227864.2625148214.14873121594663843", "41326585.845325115.75716.46.6386281116341385573762", "181416486448286433676827843.5412656421858.6.876234", "5238449.46282153948261565.447267859352165549714183", "8116393457576712486.212785869462818639258377829854", "182475734567735659361381534.5576288313348514.76464", "1753.66423587.2652416246.86.775113253.551271541725", "493.6887825494571414833426585936886465964826114.81", "5.845123246178563817453941753476418183295452776694", ".3.4141258793542432439.55261263963231816.454732629"}, 12, 11, 23, 14, 50));
    ExampleRunner.eq(68, 99, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"025821745961887116.28116756945817242.3146615642369", "3951116844.56583417971517283921583716.74583487.5.5", "33968178116924481154974221252944812557961523162948", "13153576821292251821734968516216965421212975813262", "5338.2373785513735743.274582474.756371144168454413", "865578.65222483931167533975216585945222214.7968822", "4812148925162712.382737639587374549538885149511731", "648818316557215441156.775832474.63818284.856688116", "838557763487176583758.54871343577.4672728124514282", "765.361558168976587733823264349345274429678182242.", "315472474.55138184921463212.5672288697571231771395", "73788.674677256545855.534278653.71617.661171512971", "73927228545592383355422212637.6482284..86762552681", "29634835842673172944111434943738463686482946676482", "7453422676.214111639484821824448.45431381652956723", "1144.2762581424737454.4.6847811633276817418.757172", "686124694511833381278.4.5.716583166272617836467728", "9334337264136549411167377735537.24173142.278749547", "5789881345265321741368462.261315174273593412635129", "58531454.754368433284.2.6.4362448455968512881645.2", "1351159831537235.3.58.7.2.2.83.542.251215327715921", "63.45823341393623335286.2.2.65.38531525486.5373638", "697582412379751778539568171669437715584828746.6356", "75453341356589515772529646887675988814131744947823", "5482882729271268553961562757566559331738634.456787", "67685129872183816..5116.4...871244..88.34.37864123", ".3377843213218.5...1812.5...482115..31521364139737", "6846..4411231669835113655...6622216627842387822149", "5736532868.862571118878....51213167.93157286176792", "46575696.2315825587558168765213146..54868536462953", "879574722414283531322767....7721116657285794472755", "295686478513683372755878222886976877452.5561743147", "473.2376226595165454747868817253634562221686.85477", "85177.67697463345137.48412254585786661616789678181", "281814697578713517.36683323337797813144555776.4346", "93762722265.73.734.2.268.64.2.26174411614.81465265", "6287..515143168983514727734.6.41878135.47422367829", "64115351429318862155.83658254318374594845188255793", "83513792417152131829785465161532928871815432486.31", "14.288788135632458875306813181732553536783.85.6415", "79771215145165274.4626212152.682385179532781579851", "8715124585817.2383482661865287615.7163412486264411", "118733252.365844.35717236978431254.43136154.578735", "41161479161123112966582257948132262.45811184.75623", "978333486785.43476186.31872512947413481946.8445114", ".85461315131232953417482974427454988613.2688132624", "6854477158.287325484572671297572623793822888267522", "866785.2145.23771285964573255948588732976411134984", "62.65321223234.44213563.58236737948777214953827874", "2946354816282968171162943416484951226557.662722679"}, 44, 39, 39, 22, 50));
    ExampleRunner.eq(69, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"9755364879232388679684215539637768659431124874277.", "29418785879641667439438731475765894167771485757295", "51375261245925136536.34488257.37667851848833388963", "534966538446955786262.34582812.8.45451131413.41757", "458267354375829547317822498343674413117.8653658318", "65679785882569547862169452615439611318436467649416", "48.87587633127482.54287846951286835944573473887875", "8378474.66112747964427125721125532784...4181111311", "6117.2365222652843555.8867334332313453351628715736", "86126655481182.371341576.2623111459637378542486359", "746.38428553487665.3453.842822438.58278541846836.6", "898645758479656424536536941717714.4463721488565961", "445183.83.3455421131968672837644871576345582954284", "9655727216279767241862417988.58527343735142.257681", "6166294356212665756568262735312672369634515447.487", "17.38712855839734375149454365869217871135861792321", "56382516938127866923833544974766233681532.65854284", "15849714337318414325361311666..44862566157.6885436", "25422311581685.8853215174835827435951566453325242.", "1369434525842.37221411676579831131616..86218826393", "4.345724253364426667722251543814.24657366385478973", "552588166.83458122735.75772142512917453.2787945561", "9667344177681865724463866947472183754.734769245588", "376689846135816.58.8785..4667436713692353172129581", "439757174575675.2126148..8.8..542844373715487.2675", "4227543.981627251738358782476.4.274137812968838125", "1415945636811887341663161315473.7651881166.6811483", "111676.8581132777531331826541738589886321653278869", "4329578241873968287451261475211821243..44814827594", "59244288244813543587459341133262.26814323885735936", "5418747885.536314427135.24852241794665486185943667", "946123842.4841145417886444442328543455481169715523", "67214784163393421641797376771562843398312372169467", "86.848847318421574138278534.236374437715.656297875", "715156.3927154414369361847731762213935176644851353", "3276946852722873.41431283.752.24124326884898761286", "639435364449532328134532171624124297167.8651882379", "472933152563692255216233.412274148584..47232811692", "59835532647588285671377754728238634586514778587936", "375816761395171888167524126285547.2653345713.53557", "95847615515531274.4856135276.87.637128128139562342", "34371854586478.7741442123847.56.51114124537453.437", "371346333717.36463547.248832.3..718374632558717372", "42372818.165733247.35476253.7657881693827321797118", "87449161887263.31763742923866536.36483241392644412", "331535833713.536545675.634347366671847131158415424", "2549518.25573464.56278545.418888469.75571354363428", "49161163854934772234.23477414973468532925513464.46", "63262688469553664612839365822644215112873616.83648", "9886826611818329218275669758172649812261863981656."}, 21, 33, 22, 11, 50));
    ExampleRunner.eq(70, 221, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"953833155953432755956236732946478584961531437.7349", "27368245.3846331152971881117951711414.582887822594", "42961813532.44528437975487464956866166956486557.34", "6243668.5556.4852823285938866785935163217354986537", "468.247578176412115.43432.872617862416812.48234146", "26549438635179535182449538865479711211463479635533", "817479417325667768263965116735964521732.7695741711", "43263176734233776954471756885457849341141268643213", "28783342341234.8.451861272.757173535683.5855731257", "341138.23431452.21831414974418837.3987676151462669", "743487489441118855951566435.6652244696651331318593", "12.556347312481448.571241212968273165.542238666.28", "49248121557.55273246734.45256834566746771215988588", "9558711543.685172869811517154941268885827454429846", "2375168.39782123115395546523161274112741476.566727", "31643765765.5163133575.617581345244883617494751811", "166579382368472669858345245832.64696425121242.8341", "28749668147458.76711465464.8576821736934.835123547", "845.76732215975288167.9448221262278954758111281859", "21248277933226824438237761682546611396841271175694", "869578134656577857.47184584893358411572.4585486955", "6975728165536.7683428188.4142326597513322578973537", "92386784567125715859736535415987668316747.8665.857", "36572575397628818614961218445617.831641126295.5778", "54815594828744647214672656482349215221628492761688", "26114963138416782.686245573288366265463845688.2715", "67429414328848..4481816617755338716357242135153254", "6149248.27467544541777877682186181373773634321662.", "5423873897.4715112781729257134567162.5362471644292", "5393112378757465689445135477.452837465525528676941", "59377121855739254137817836532217384146873756934738", "975122811247.217574.462538618.28535554211165529412", "735373486963218165774.6623482483955464765759842231", "5288329564323418.5882.5158626555687323677695768112", "216459531185667449345628429637665529416723552.4315", "8854978457335168432768.654731661121267....518.3466", "744928887358611265869575185132.4116143..3788436469", "51265785973284411221687974853542861594761831648396", "5498181671143762789348843435.86.318827644161584945", "7976734731263925563442.467788374527766583175534261", "9747784427671726856963721524516483772.364887539478", "214176732.21133334768438232.4187388618225532735762", "128542.46463264.24188562955723417.5517218398111271", "4163792228421214921511555.46236186961412436.818714", "16559232166516273.71527444941823162951717446988467", "2736.441572865..46117535438546288.38778532617.4824", "48765288164.78224361674964647842124598516224524526", "54941578.815238438.6.25872245968473846945161736.67", "6.4258178233975528254964178184973188152953532766.7", ".617221449768378845977.215221359582262829452728159"}, 14, 9, 26, 27, 50));
    ExampleRunner.eq(71, -1, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"0459862311643954188757945517413964127243.41778552.", "5953881785955881132.557737149512218549437287562794", "17268671322817966473446926826887974216445.86254936", "6248582523588218.871532855198856315553786281795312", "4411187.61252856377777518.74718755.778562113568648", "361847777665.4521825693623783692423876456186.36182", "326764974137532955166817.4416753693648684619412634", "42254616152738235.54.64732235.75136.63558456511353", "311241486.21887317623274725865744536244.7148716732", "14594341436715818.46.68413453.23818.31531427672169", "58569752375143168.38.8.551547531113788761518357692", "43983816.858385665.76766267745362417.8615882745945", "3.458535467.639861664432772946634154225243816.8317", "9748545568953871586923228715924176816954218164.316", "45172.46176321415.78.6.816532.3761811533.264947471", "4517875965562554926478253.38776593323785648.545828", "273513974422451354161637.2528676393381275495888683", "7775326835788934714846676797546246237168..61572853", "75597842336563484547242.312117582418673.5512171339", "15569682142473537.43..8781133754787573944423184692", "869645618134716437957827384263483277.6712118738948", "494113311264.2971674152871393865713741548775895788", ".762138865..81682513717662826288636744167315779447", "66132954.87737866349761267166817339312112836956262", "45658769866725512.63..3156482554.74637355329786627", "888845.56286853363818482425735184111781865.7675258", "16435168.7717973431188323296654715527615..35233262", "6449731762114.897518275514.457342233877.231237164.", "853296886.414862163557254561244182175..55188361396", "86937461834147351392123111144416857822562131268951", "592718213725589617818233256.2315711553143321492368", "96568258789751564546864..862618311591511135667.481", "76162.56137326167285224439431621369371221842936726", "52211469815.35852.61163835273862873453356379641684", "71717594177224667357882246297567876113814616511311", "82574.63621523288446536712482.47746581674496518752", "244945151462651226588243883565.2841115295585876479", "58429488738379518118439412784167738242.374118147.4", "669641778134.362865.6665873132.4125433746.77773923", "5927532132376895686736622462616.471574657888656417", "9536515473.53732352135839752.434285169658811639656", "555872141667.2587388481365825113556862147246277133", "1125187974112113966738164936783286.568881539444211", "23865695228773753971762452976267554956531455978283", "238769275.65416564924711747938267454.7173144297457", "746334113331612276323838.24563533.7646482627888424", "713684868466766.38134528738335459461818873.8183628", "34.35488714936476852945468744931782186926577142963", "2.5.56781362869836185758186747935516762926112843.2", "9732.24873165956518783958138783943583284.681737449"}, 26, 13, 22, 35, 50));
    ExampleRunner.eq(72, 136, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{".58168253943218166.234628129367725669687735864788.", "5..68181836953817255.561887549648775879748837461.4", "2277672876147.58.63132.53.73166.56.76436.266731876", "4322621416512.43.61716.63.68717.53.68856.256818161", "1849668777427438582.46468887.44767847.747164339488", "7813.558.41226446963837767923211235944226757963676", "26253951537142951521282951231187935221467249451284", "228245976173437.21118182.6411886292657183497362428", "2611151546343376823665774417248.48873836.854567563", "3143246.67736211856.66518886654.662541254618766469", "766.88523364713218.55511432.558.3512.7641381117313", "9146838413.3431112839171512857958568467.7328846598", "7396522813.6521286413.511128533.41726244.317662.31", "65648581774479538115549578764758436162948684528617", "47463447683844729681178429355788358511861515854713", "11217938614735515.75263557.7688.44213266257.235222", "2217673..45.77.34.31136.33.787627451246765.4185621", "13243697418485566.33183.47438124586361756936687256", "663667365226264955481137.5543215337976864545761449", "47893166741715.34.33463.63.3751243245142.352788174", "7283627158651226727892655222111462743113.268144446", "943812142958473143.56828143.7323124296423281236395", "131828831255.8451838435.2653831478.276318643937638", "3926731833938817755941586413.41488515.34221256.961", "431369474845842634673146814835185.5148216169678771", "1465.54582452958223535.7822786292311288215.3866431", "12184898746132642.257.2.17.84..6151342155948724482", "2512.478337643.7658.8.4.71233266883953676585885659", "16294816442275.361185.6..8188..5.87284...856882666", "649212238111335815778715385175.3328174...481141278", "374815382784884412882635.7166..8117254.54688711597", "95613331686.358263173.46.5652771681341875216.43776", "28868843681381781587171169541175869272721166488.67", "6462778.694571123293541174563863898152232439456317", "463511275.376733438.7.8513352325255321827394462815", "3858349784364245674.3.211787...6162433145325611712", "6837974744821215296353711296343154797643355726664.", "23496848876865816536.562825564.43286.....6181..662", "829442281836.3.23431563923126167.74488744968554521", "7966658747233.4581874796622783795726746362815683.5", "9715328615.61776536.54466532.278685578267416674666", "63236.7786831446786.54788782.2341646..311245265.67", "6532171477.33213134.35536712.386524348812122678374", "221427476978157.41567412.5157178392157184398543623", "1726669.54823215976786134.75583154958426842.516664", "2446185844.6521183..3526144..3481883..761282337354", "78565536328416546928518564928732267978731553.27858", "37936886786943836434956836244936782437933538453965", "495273731715958736145.54136212.6171384495642744392", "97684434111329584735849758115359557165129332231179"}, 11, 10, 39, 13, 50));
    ExampleRunner.eq(73, 216, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"94882173395622151797878178294842313493647625248789", "8925771516931222757974138764.381811549237314142397", "58965113463963476132974137112944237264973861814973", "24395811216493577715393646718692817243457745578681", "4737265316473245..5483143..56578451126322216862353", "434.367563327248..4827856..71588345825846.36728121", "4.66273244282544.611527617.78756313331372855814334", "42266955823166.45463152926482452.76428732259238311", "138182938487482951587745.265238651.418335575968454", "1753626828481782.772887837.8518785632528468428782.", "8772955566213.66871766953122734.668895367254385293", "86.7352823772267.8375723614.851215454.211748554926", "32463267.5388778256.83483517396571288788123816.367", "936618736421855865536.776737.2153774295743842.6683", "6579834.4123624216837715584848421547347542.4465282", "59837222628857187831767535585693558876619347382124", "743583.752822513.54858445414.272127522827869378674", "3174764738736184.431568166123411769541377256938857", "17475965481816843865481158837716.44133764613671439", "12637353897812315285747453925811511693512271145496", "1395613232713.35.732118542282824614265412.78117.25", "6766478488661822854957421832675..68263254667779768", "95542771782.8457751438861373866..787244225576.7127", "4649771867136.25178813.71538114..57138517418443471", "497748725215.52432324179432.6857763523758792452782", "74647494552833483.335232537216.5.27411486649688313", "681885477488688926116557.8555438735864322857.23154", "61873956762753785114988646313412173.43..4481482636", "4141268.3.2771314262286576755622186392546622621394", "689216681444736558.2851185737933284834652547187946", "5448813.8316122576.45.8775438486.75.68152312692648", "98641378612.2513.382734479765187449372134158297617", "4379561888.23833447.28561855.51817416.434214179888", "8976.23711762938112846.45532517.435735839414315839", "44747693315878776287486.268.87.2.86613257128585175", "25427646961771166.74731733977576335312721882926217", "311679516528445.4883272.732.38.6.41232542.74252545", "43613371398733641313392651382521517494.51481523698", "43983666481547..88121433485179575511512.8563154971", "5832.411113647..6571152.54166263.54511454.48851715", "95522134482516..8821744.76231854.38127814.63286352", "44543736774956563543.548.4813113493676846733756721", "8865648151587567958231112941281545.718228459677823", "4966582847888282834681165446961768468921428243337.", "758.4741426154..5473232.58518567.77666583743177153", "36872945378816835965872257974487762.43481434954176", "28638863837.484324282473288.6356881596856483726527", "529411617.53412243.676117213.936513445938286757926", "558.61138783926516842963828836935488484966837285.7", "9866.24823453941483855974427742.344371829644162369"}, 43, 28, 4, 42, 50));
    ExampleRunner.eq(74, 12, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"961273742951162116978433133.36117.3663131736255329", "597321151493858774694152855794317718594878321425.4", "669211637869245668439741774129437871127548112.4661", "827451376435786.76572187.732188.48283456.445628635", "421837.3675828687.3518148..3516886..85662511257.88", "254944523465946518465978487256.4678645257772925783", "31648978531166924178255946822744944878754198718425", "88246.2785278524362137573..58113332268649256535673", "168.8753272246677.6871744..5816243..34582151594165", "1562522.33232714.767629274321824794465484127755429", "7448958861234.5848.4526224492423251595162884155493", "46976211516232473.3543173..35272452431272184587924", "6.587118835155371243941122235.26751314322171867241", ".356842173974221834933113114936537884.618187479358", "711236.6..665128143522742445745.57.878113478984836", "5286776.658571837.238.71...756..416331646292646722", "4783895465721159562282161..162.835538146..48624314", "66293553816785.74.237.7....117...5..81122351592552", "243286318618.3457412149744143548797673716182821359", "145168.6..8.86.5..118.7....71283323394812281785493", "3695175342147..7...11.1.....87...5..78163217783.56", "6.711244555836573141217.....78...5623432287.574235", "9468287572.435875838816811145916166154935867588458", "431415.7..5.8.15....1.71.....7.1.2.218733834983412", "68682569761247156...1.78.....7.8.23626746397555225", "7264498481458749816541511..7.6.736362518.647677118", "832.335145142.43..4.2.78...4.2.2.6..36183217495865", "113265.7..7.861531674193111173131935267.568865115.", "7434.5.7..5.1.45..1.2.75...162113537.4375826181693", "6792665245143.83..4.2.11...4.2.1.6..7.211533514.66", "494148416445933131111114...8.6.4.2363321447.632761", "93387874579767424421713914451538387815429385564673", "3187.8.6..8.1148..5...18...4...4.6.811735433.43118", "44762529234213472.5...11.2.4...6.832212178.4346128", "73178.5485158129443141367179151815649241247164.856", "6729556525252387255...58.814...8.681214426862.4445", "1785.4.5568.411511368637555186168.3815621357867159", "1155.8.6865.4527215...51.214...8.2115..655242653.4", "8297473144242412185.2.46.217.2.8.8762.734735255964", "392152142614.15481355393362855.3.2821318485.514545", "9732142611328525757.6.531117.4.7.7182.4.7.6567.352", "5655131637.755.3852.7.4.2812.5.6.67152143235254737", "5876432.63832857961868463965886264.656188885555338", "26245934.54113842924571437971573183931182143951273", "114935613644427536.56816516956888562.5653253496162", "7558376142.647.7416.4.2.61623323237683786721651824", "5646573113.762.3817.2.5.7187.4.2.6715.3875282187.7", "64944583815971572554945826542923478155934432556933", "796872524112536948563456928732164.236775247.256858", "9287433437582978577712.24513517.78472282.655185159"}, 0, 43, 12, 29, 50));
    ExampleRunner.eq(75, 218, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"935111134935111533951286242.437188379255122524538.", "59247774369281772629518674629464185559217822852698", "18978537265.31287467.46873732971713246941586833935", "78764923221242938823444924213434951711865338984566", ".78433463514.35586587.88162126513.231562434.572818", "658152686667833782464.267618151235122667.466361466", "35373267228839741311549281874639288617549445272379", "482188951111142.66476142974213765.3523155618745225", "6188746943882717.711285679712215135876894426752781", "125243248672721836763.5862455211576.818263814.7342", "557.3145.75272343392676284396676821595716314341293", "52.732323552.44523557.746227558.635635553126218.34", "654816478837238139568628124687.2115846588667925681", ".6345331479662881549551614327841713355834487759658", "63533927283866332674..6517854.45728387282.34823116", "637.6548.53..4513215..8722185.27471724315369544832", "73759384524327973576868975811886965412735865857889", "2515443.576632163756.7.278282.238245477.5453736253", "861517.3146144167483726133264.8116.85762.867581174", "16421324877351338168.3.65.342613575397812233527592", "17.764571318238.444887659617314164644.474277516938", "4.556543215...76.742.23476164246471455262277.35766", ".4361331159466512618.6.53.287.73862215587425449478", "68275934524515145.26762113975436114777556237393181", "418.6618.81254151449461717663377515523152149765784", "176293652271233538632623786882.4361346621314665149", "1886755955621863636768281677.544331518894753116557", "283263.3466114365694151142246742.4882174..78572846", "75674274895468342442528742.61811745292667232367694", "12.634583466569212815364784.2553372369218542414.28", "79611181154...578883676.474371844.4812725632945663", "9468863615.436841223783351772888245115217624479318", "3375497147334468843885.818212734476412956257372165", "512.2583.78...516323516242371374738588651329476733", "88144842282252.3276476435.734762459.47733552735649", "124168397461718759353377678.7663133265416518248232", "178838.44731223477963358863853963717242.4682186333", "5538666379588648875167.584735344621497643651641792", "84932451341274392177658245543118235575376571414978", "4987664746674.874583544758288552374365361442666518", "9242548168946233761231271187.6668113583178.5761342", "26265985516353838581836878728247956226132987665411", "85.33751266282.571572448.71536843935278287528.6775", "73627367153567214569634188829742368349632584331146", "3738472.54561482976522417.35513453943416145.648212", "12525898256171737961786153.54423856956116817927668", "532522252.76517463928466186975826713.4475228387524", "87478685566.54431855963527132.31577485.75166542937", "495245426567941471444.66522837.4822716692542616596", ".534461862852.232687459341264529241685429551281879"}, 16, 14, 39, 31, 50));
    ExampleRunner.eq(76, 5, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"966576435958877836935532833966182242.24186246.8579", "4966471253.5847621296623126397126121693523716423.5", "33961477184923868747931526166938272412943266262948", "61417945828786975777845946773767978726747377927511", "47517431238125464.78136463974511256455696367282122", "272185.33231433926272787.5326741592541174719567211", "12684169512128629537172629584824626681889266182178", "5.758543818275155338173833448276777211116355683148", "725677.7756876424331875316255275323631583845244787", "73132.28824867488677677388313224176456438217211569", "85294442746396613181495416783668143495776182523697", "43965571555186528868466621148286174247168247434951", "472131834966878553.5177614446572448342465863985764", "983518332426621484646662163274523733564.8675786611", "5523664846577813477715.28167467968268483567.337187", "47855886356715293618226756783846152324659832221328", "79757344658656481124571466787811654347843728167353", "87888795467312174572264651832836827134731181852167", "36613.31488124532686173546423717441741677238235479", "22328717873586171351872685447513173297741313517395", "58971457163716766178578672757613373766846147276978", "77546123748417646533828855226478724734221614955717", ".81416735132846874.534788531.451212348295647634588", "55422679764643566618256133265944222131655359447861", "166..717124479557735369342611339337265439312525234", "89334848112115353571535188781738848785444228743288", "378673.2716616155761585113873437288743481317315144", "85418.51222255298612351337812782653321812581871657", "544212632974552525482287461114388435946223416265.2", "38483521427212384484784826821723213726254711737967", "41677718665142324222232253577635765315731163968487", "98686334673716276635715825774576222644554767445145", "31876859268685423711636753558734124334737369346811", "47.53283884958181517953422255.43521865.64737129837", "8.45334462487.28283747.332288879655674349664124849", "173167.546161215467174868113.582232544672415743165", "611159612728442.86832664131264.7127328693468844433", "86634256897877785314731158217556178394541353511794", "32822824665655648215351118151855764858648241636973", "47134725564716146755557233652367787244548636424467", ".5347846552327886547228588848213217483833127713643", "5178518948123547948521547933523416941128117.416765", "87414826221384354468322564416224722311735864483814", "13767585225723583925527867.44231514948213753978218", "71356221462226944335418.5821823497853725785867818.", "1741893612555512187946223857961122714.682275169845", "435386518968823767.75713115.26411782.5585456165527", "36963132886931532845944123136961483235.33168144.47", "4.524681246793342878797372384693816288797126811298", ".277.23176835964478187941481246944181163.312732349"}, 44, 14, 35, 49, 50));
    ExampleRunner.eq(77, 50, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"4726437048", "4249424875", "3.43.89185", "8224836331", "5746925347", "5755747681", "0925206485", "0594524919"}, 4, 6, 7, 4, 5));
    ExampleRunner.eq(78, 320, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"723282657808.120934.636770993008932.95.270975.7681", "0410535.6211245517..518.3778001.301587148569000750", ".292605886.615306.3484.232989.005074844.086..23274", "0354167242604209010441211.749150.1626828.5753.7726", "922765666367387..4665993533693269..1978698759.80.2", "91.0124.7.95921375290.484665.94061389305.264124.75", "4.251..9.132358620.3450707.078589101637.660651600.", "40.433101.4999.83524407.721033919699.4985660700887", "1.9570.6.6509801746548545300996070.9194641964279.6", "3670506430.90390920927467.14269682714324.2583.6402", "5.26..90.3.947708.1.19852356603.5665122.93301.9188", "301061.424.8441573.53.42.02802516779046919.60699.3", "50.4637..329931043886523.913631.0866780790685720.0", ".1886666.704965205304788.7659264847812484910354720", "..028721.10198062230.022.721.4585..2850871..264930", "8268.330.381.72900...36149310135.42421069517800098", "4948636032.307285658.979768702384.67139.5021962580", ".706233603187764816769323832.44628.6515685674.52.2", "56.62047301977204.87779141103..2016.35770297.90610", ".743.8.2731301665682777.2.771619736573809420.7.5..", ".1.0928182635.1237545898329326907578.4536498608037", "284620.60.8509309172.0713429217185671.329488817687", "102330.00054191468.04308848594003002968..3.2721962", "32.034123355366302568010312346619083.0.5736.738136", "01089045.511562411.4.9378519309178302.7..0801.1536", "58.231607.5320220410205733525964628061135.78697535", "0025.706221.6558567610812.3375551032821752.2010936", "5903830.87.8754845210848751.47062223375.1127969277", "2392.261..29532797.514084.2..6774854018.0498850583", "01029.887205006.29687125591203108.14814622.08955.2", "5.714565378367373681.170597304.8781816335.3...5468", "45284.00.8.482001370940608.18.8.002.86.27126.00066", "209056455460004.94463641367634947018682332..565011", "..59993532..0160358.57567693008055373601200.186734", "3506093706281.52836145.553559937605581.6.33384.00.", "9321159047.6116745882847..0.6.7173872520.105716906", "541627067862.0919115148.7.779.12421.56.5722.632806", "935520555.9502498212.925340.9280964291004.3.748019", "953003300749468538045.0.856.9.815.0240.7.839183940", "35230945565589710.690.6393232.4.10040.181953573529", "14920374768590296449285.39233614..44.08.05887..135", "563391488349917.34.51577.929..00543.9.56094389.685", "3826923449.4453779414.69.0444.4..70..51.86.4079392", "28021.15933201607769953170079.676409.068633162.523", "16610990.553.319064828.07988738452..87597508027.38", "2736.3464362107963503808823778007086376..307003227", "4794.499195.0974.7998415.4.23.35000557.549515.5070", ".36207990530.28.86133.275329.12294196970607338.964", "39879472663617892..4..685.850239850248690824021929", "731334981..7.200.514240986520..0090030.74118047696"}, 7, 26, 29, 23, 0));
    ExampleRunner.eq(79, 74, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"723282657808.120934.636770993008932.95.270975.7681", "0410535.6211245517..518.3778001.301587148569000750", ".292605886.615306.3484.232989.005074844.086..23274", "0354167242604209010441211.749150.1626828.5753.7726", "922765666367387..4665993533693269..1978698759.80.2", "91.0124.7.95921375290.484665.94061389305.264124.75", "4.251..9.132358620.3450707.078589101637.660651600.", "40.433101.4999.83524407.721033919699.4985660700887", "1.9570.6.6509801746548545300996070.9194641964279.6", "3670506430.90390920927467.14269682714324.2583.6402", "5.26..90.3.947708.1.19852356603.5665122.93301.9188", "301061.424.8441573.53.42.02802516779046919.60699.3", "50.4637..329931043886523.913631.0866780790685720.0", ".1886666.704965205304788.7659264847812484910354720", "..028721.10198062230.022.721.4585..2850871..264930", "8268.330.381.72900...36149310135.42421069517800098", "4948636032.307285658.979768702384.67139.5021962580", ".706233603187764816769323832.44628.6515685674.52.2", "56.62047301977204.87779141103..2016.35770297.90610", ".743.8.2731301665682777.2.771619736573809420.7.5..", ".1.0928182635.1237545898329326907578.4536498608037", "284620.60.8509309172.0713429217185671.329488817687", "102330.00054191468.04308848594003002968..3.2721962", "32.034123355366302568010312346619083.0.5736.738136", "01089045.511562411.4.9378519309178302.7..0801.1536", "58.231607.5320220410205733525964628061135.78697535", "0025.706221.6558567610812.3375551032821752.2010936", "5903830.87.8754845210848751.47062223375.1127969277", "2392.261..29532797.514084.2..6774854018.0498850583", "01029.887205006.29687125591203108.14814622.08955.2", "5.714565378367373681.170597304.8781816335.3...5468", "45284.00.8.482001370940608.18.8.002.86.27126.00066", "209056455460004.94463641367634947018682332..565011", "..59993532..0160358.57567693008055373601200.186734", "3506093706281.52836145.553559937605581.6.33384.00.", "9321159047.6116745882847..0.6.7173872520.105716906", "541627067862.0919115148.7.779.12421.56.5722.632806", "935520555.9502498212.925340.9280964291004.3.748019", "953003300749468538045.0.856.9.815.0240.7.839183940", "35230945565589710.690.6393232.4.10040.181953573529", "14920374768590296449285.39233614..44.08.05887..135", "563391488349917.34.51577.929..00543.9.56094389.685", "3826923449.4453779414.69.0444.4..70..51.86.4079392", "28021.15933201607769953170079.676409.068633162.523", "16610990.553.319064828.07988738452..87597508027.38", "2736.3464362107963503808823778007086376..307003227", "4794.499195.0974.7998415.4.23.35000557.549515.5070", ".36207990530.28.86133.275329.12294196970607338.964", "39879472663617892..4..685.850239850248690824021929", "731334981..7.200.514240986520..0090030.74118047696"}, 7, 26, 29, 23, 1));
    ExampleRunner.eq(80, 8, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"723282657808.120934.636770993008932.95.270975.7681", "0410535.6211245517..518.3778001.301587148569000750", ".292605886.615306.3484.232989.005074844.086..23274", "0354167242604209010441211.749150.1626828.5753.7726", "922765666367387..4665993533693269..1978698759.80.2", "91.0124.7.95921375290.484665.94061389305.264124.75", "4.251..9.132358620.3450707.078589101637.660651600.", "40.433101.4999.83524407.721033919699.4985660700887", "1.9570.6.6509801746548545300996070.9194641964279.6", "3670506430.90390920927467.14269682714324.2583.6402", "5.26..90.3.947708.1.19852356603.5665122.93301.9188", "301061.424.8441573.53.42.02802516779046919.60699.3", "50.4637..329931043886523.913631.0866780790685720.0", ".1886666.704965205304788.7659264847812484910354720", "..028721.10198062230.022.721.4585..2850871..264930", "8268.330.381.72900...36149310135.42421069517800098", "4948636032.307285658.979768702384.67139.5021962580", ".706233603187764816769323832.44628.6515685674.52.2", "56.62047301977204.87779141103..2016.35770297.90610", ".743.8.2731301665682777.2.771619736573809420.7.5..", ".1.0928182635.1237545898329326907578.4536498608037", "284620.60.8509309172.0713429217185671.329488817687", "102330.00054191468.04308848594003002968..3.2721962", "32.034123355366302568010312346619083.0.5736.738136", "01089045.511562411.4.9378519309178302.7..0801.1536", "58.231607.5320220410205733525964628061135.78697535", "0025.706221.6558567610812.3375551032821752.2010936", "5903830.87.8754845210848751.47062223375.1127969277", "2392.261..29532797.514084.2..6774854018.0498850583", "01029.887205006.29687125591203108.14814622.08955.2", "5.714565378367373681.170597304.8781816335.3...5468", "45284.00.8.482001370940608.18.8.002.86.27126.00066", "209056455460004.94463641367634947018682332..565011", "..59993532..0160358.57567693008055373601200.186734", "3506093706281.52836145.553559937605581.6.33384.00.", "9321159047.6116745882847..0.6.7173872520.105716906", "541627067862.0919115148.7.779.12421.56.5722.632806", "935520555.9502498212.925340.9280964291004.3.748019", "953003300749468538045.0.856.9.815.0240.7.839183940", "35230945565589710.690.6393232.4.10040.181953573529", "14920374768590296449285.39233614..44.08.05887..135", "563391488349917.34.51577.929..00543.9.56094389.685", "3826923449.4453779414.69.0444.4..70..51.86.4079392", "28021.15933201607769953170079.676409.068633162.523", "16610990.553.319064828.07988738452..87597508027.38", "2736.3464362107963503808823778007086376..307003227", "4794.499195.0974.7998415.4.23.35000557.549515.5070", ".36207990530.28.86133.275329.12294196970607338.964", "39879472663617892..4..685.850239850248690824021929", "731334981..7.200.514240986520..0090030.74118047696"}, 7, 26, 29, 23, 2));
    ExampleRunner.eq(81, 8, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"723282657808.120934.636770993008932.95.270975.7681", "0410535.6211245517..518.3778001.301587148569000750", ".292605886.615306.3484.232989.005074844.086..23274", "0354167242604209010441211.749150.1626828.5753.7726", "922765666367387..4665993533693269..1978698759.80.2", "91.0124.7.95921375290.484665.94061389305.264124.75", "4.251..9.132358620.3450707.078589101637.660651600.", "40.433101.4999.83524407.721033919699.4985660700887", "1.9570.6.6509801746548545300996070.9194641964279.6", "3670506430.90390920927467.14269682714324.2583.6402", "5.26..90.3.947708.1.19852356603.5665122.93301.9188", "301061.424.8441573.53.42.02802516779046919.60699.3", "50.4637..329931043886523.913631.0866780790685720.0", ".1886666.704965205304788.7659264847812484910354720", "..028721.10198062230.022.721.4585..2850871..264930", "8268.330.381.72900...36149310135.42421069517800098", "4948636032.307285658.979768702384.67139.5021962580", ".706233603187764816769323832.44628.6515685674.52.2", "56.62047301977204.87779141103..2016.35770297.90610", ".743.8.2731301665682777.2.771619736573809420.7.5..", ".1.0928182635.1237545898329326907578.4536498608037", "284620.60.8509309172.0713429217185671.329488817687", "102330.00054191468.04308848594003002968..3.2721962", "32.034123355366302568010312346619083.0.5736.738136", "01089045.511562411.4.9378519309178302.7..0801.1536", "58.231607.5320220410205733525964628061135.78697535", "0025.706221.6558567610812.3375551032821752.2010936", "5903830.87.8754845210848751.47062223375.1127969277", "2392.261..29532797.514084.2..6774854018.0498850583", "01029.887205006.29687125591203108.14814622.08955.2", "5.714565378367373681.170597304.8781816335.3...5468", "45284.00.8.482001370940608.18.8.002.86.27126.00066", "209056455460004.94463641367634947018682332..565011", "..59993532..0160358.57567693008055373601200.186734", "3506093706281.52836145.553559937605581.6.33384.00.", "9321159047.6116745882847..0.6.7173872520.105716906", "541627067862.0919115148.7.779.12421.56.5722.632806", "935520555.9502498212.925340.9280964291004.3.748019", "953003300749468538045.0.856.9.815.0240.7.839183940", "35230945565589710.690.6393232.4.10040.181953573529", "14920374768590296449285.39233614..44.08.05887..135", "563391488349917.34.51577.929..00543.9.56094389.685", "3826923449.4453779414.69.0444.4..70..51.86.4079392", "28021.15933201607769953170079.676409.068633162.523", "16610990.553.319064828.07988738452..87597508027.38", "2736.3464362107963503808823778007086376..307003227", "4794.499195.0974.7998415.4.23.35000557.549515.5070", ".36207990530.28.86133.275329.12294196970607338.964", "39879472663617892..4..685.850239850248690824021929", "731334981..7.200.514240986520..0090030.74118047696"}, 7, 26, 29, 23, 50));
    ExampleRunner.eq(82, 3, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"...3", "....", "2..."}, 0, 0, 2, 3, 3));
    ExampleRunner.eq(83, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"55255", ".0.0.", "..9..", "..3..", "3.9.3", "44.44"}, 3, 2, 4, 2, 10));
    ExampleRunner.eq(84, 10, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"920909949", "900020000", "009019039", "190299149", "999990319", "940229120", "000409399", "999119320", "009939999"}, 7, 3, 1, 1, 50));
    ExampleRunner.eq(85, 6, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"55255", ".0.0.", "..9..", "..3..", "3.9.3", "44.44"}, 3, 2, 4, 2, 5));
    ExampleRunner.eq(86, 5, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"20.00", "00000", "10000", "20.0.", "00001"}, 0, 0, 4, 4, 2));
    ExampleRunner.eq(87, 12, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}, 0, 0, 49, 49, 50));
    ExampleRunner.eq(88, 2, new NumberLabyrinthDiv2().getMinimumNumberOfMoves(new String[]{"...................."}, 0, 0, 0, 15, 10));
  }
}
